
<?php

require_once 'OperacoesBD.php';
require_once 'ConectaDB.php';

/**
 * Classe responsável por tratar toda as alterações referentes a tabela Aluno no banco de dados,
 * ela implementa a interface OperacoesBD, afim de garantir que os métodos básicos de inserção, 
 * consulta, edição e exclusão de dados sejam implementados na aplicação.
 * 
 * @author gabrielbmoro
 */
class DBAluno implements OperacoesBD {

    private $conection;
    private $table;
    private $bdconection;

    /* O método construtor inicializará os dados: recuperando a conecção com o banco de dados, 
      inicializando o nome da tabela e recuperando o objeto mediador com a base de dados */

    public function __construct() {
        $this->conection = ConectaDB::singleton();
        $this->bdconection = $this->conection->getBCConection();
        $this->table = "`Aluno`";
    }

    /* Método responsável por realizar um select utilizando a característica LIKE na consulta, ou seja, 
     * utilizando o atributo valores que pode conter na palavra, não precisando ser a palavra igual a registrada em banco.
     * Por exemplo, LIKE %'g'% retorna todos os registros que contém a letra 'g' na palavra.     */

    public function selectLike($colunas, $valores) {
        if (isset($this->conection)) {
            $resultSet = $this->bdconection->query("SELECT " . $colunas . " FROM " . $this->table .
                    " WHERE `nome` LIKE \"%" . $valores . "%\";");

            $vetorNomes = null;
            $contador = 0;

            while ($row = $resultSet->fetch_object()) {
                $vetorNomes[$contador] = $row->nome;
                $contador++;
            }
            return $vetorNomes;
        }
        return null;
    }

    /* Método responsável por recuperar o id de acordo com o nome do aluno */

    public function recuperaIdAluno($nomes) {
        $colunas = "`idAluno`";
        $id = null;
        if (isset($this->conection)) {
            $resultSet = $this->bdconection->query("SELECT " . $colunas . " FROM " . $this->table .
                    " WHERE `nome` = \"" . $nomes . "\";");


            while ($row = $resultSet->fetch_object()) {
                $id = $row->idAluno;
            }
        }
        return $id;
    }

    /* Método responsável por alterar a confirmação de orientação, por default ela é inicializada como false. */

    public function alterarConfirmacaoOrientacao($name, $value) {
        if (isset($this->conection)) {
            $idAluno = $this->recuperaIdAluno($name);
            $resultSet = $this->bdconection->query("UPDATE " . $this->table . " SET `confirmacaoOrientador`=" .
                    $value . " WHERE `idAluno`= " . $idAluno . ";");
            return $resultSet;
        } else {
            return null;
        }
    }

    public function deletar($dado) {
        
    }

    public function editar($campo, $dado) {
        
    }

    public function inserir($dado) {
        
    }

    public function recuperar($campoCondicional) {
        $colunas= "`nome`,`email`";
    
        if (isset($this->conection)) {
            $resultSet = $this->bdconection->query("SELECT " . $colunas . " FROM " .
                    $this->table . " WHERE `idAluno`=" . $campoCondicional . ";");
            $count=0;
            $arrayResult=null;
            
            while ($row = $resultSet->fetch_object()) {
                $arrayResult[$count] = $row->nome;
                $arrayResult[$count+1]= $row->email;
            }
            return $arrayResult;
    }
    }
}
